<?php
#+------------------------------------------------------------------
#| 我曾七次鄙视自己的灵魂:
#| 第一次,当它本可进取时，却故作谦卑；
#| 第二次,当它空虚时，用爱欲来填充；
#| 第三次,在困难和容易之间，它选择了容易；
#| 第四次,它犯了错，却借由别人也会犯错来宽慰自己；
#| 第五次,它自由软弱，却把它认为是生命的坚韧；
#| 第六次,当它鄙夷一张丑恶的嘴脸时，却不知那正是自己面具中的一副；
#| 第七次,它侧身于生活的污泥中虽不甘心，却又畏首畏尾。
#+------------------------------------------------------------------
#| Author:Janmas Cromwell <janmas-cromwell@outlook.com>
#+------------------------------------------------------------------
namespace app\common\model;

use app\common\lib\Identity;

class User extends BasicModel
{
    const NORMAL   = 1;
    const FORBIDEN = 2;

    protected $schema = [
        'id'                      => 'int',
        'nickname'                => 'string',
        'username'                => 'string',
        'password'                => 'string',
        'mobile'                  => 'string',
        'email'                   => 'string',
        'status'                  => 'int',
        'appid'                   => 'string',
        'secret'                  => 'string',
        'create_time'             => 'int',
        'update_time'             => 'int',
        'money'                   => 'int',
        'ip_list'                 => 'string',//ip白名单
        'last_update_secret_time' => 'int',//上次修改secret的时间
    ];

    protected $autoWriteTimestamp = true;

    public function setNicknameAttr($value)
    {
        if (empty($value)) {
            return mt_rand();
        }
        return $value;
    }

    public function setUsernameAttr($value)
    {
        if (empty($value)) {
            return mt_rand();
        }
        return $value;
    }

    public function setStatusAttr($value)
    {
        return self::NORMAL;
    }

    public function setAppidAttr($value = '')
    {
        return Identity::appid();
    }

    public function setSecretAttr($value = '', $data = [])
    {
        return Identity::secret($data['appid']);
    }

    public function setPasswordAttr($value)
    {
        if (empty($value)) return '';
        return password_hash($value, PASSWORD_DEFAULT);
    }


    /**
     * 获取指定类型链接个数
     * @param string $scene
     */
    public function getLinkNumber(string $scene)
    {
        return ShortUrlLog::where('user_id', $this->id)->where('scene', $scene)->count();
    }
}
